home *** CD-ROM | disk | FTP | other *** search
- TEXT
- INCLUDE '\LIB\GEMDOS.S'
- INCLUDE '\LIB\XBIOS.S'
- INCLUDE '\LIB\BIOS.S'
- INCLUDE '\LIB\ESCCHAR.S'
- XDEF EDIT_SECTOR
- CNOP 0,4
- EDIT_SECTOR BSR TURN_CURSOR_OFF
- BSR TURN_CAPS_ON
- MOVE.W #0,PAGE_OFFSET
- MOVE.W #0,DRIVE
- MOVE.B #0,SEARCH_KEY_LEN
- LEA SECTOR_SCREEN,A0
- BSR WRITE_STRING
- BSR PRINT_OFFSET
- BSR PRINT_DRIVE
- BSR ZERO_BUFFER
- BSR BUILD_DATA_SCREEN
- BSR GET_BOOT_SECTOR
- BSR MOVE_CURSOR_HOME
- BRA SCREEN_ROW_COL_SET
- EDIT_SECTOR_EXIT
- ADDQ.L #4,SP
- RTS
- SCREEN_ROW_COL_SET
- BSR CALC_BUFFER_LOCATION
- BSR CALC_HEX_LOCATION
- BSR CALC_ASCII_LOCATION
- MOVE.B HEX_ROW,CURSOR_SET_ROW
- MOVE.B HEX_COL,CURSOR_SET_COL
- LEA CURSOR_SET,A0
- BSR WRITE_STRING
- BSR TURN_CURSOR_ON
- BSR KEYBOARD_READ
- BRA SCREEN_ROW_COL_SET
- KEYBOARD_READ MOVE.W #$FF,-(SP)
- MOVE.W #RAWCONIO,-(SP)
- TRAP #GEMDOS
- ADDQ.L #4,SP
- TST.L D0
- BEQ KEYBOARD_READ_1
- CMP.B #$5C,SCAN_CODE
- BEQ KEYBOARD_READ_2
- CMP.B #$5D,SCAN_CODE
- BEQ KEYBOARD_READ_2
- BRA KEYBOARD_READ
- KEYBOARD_READ_1
- MOVE.W #CONIN_WO_ECHO,-(SP)
- TRAP #GEMDOS
- ADDQ.L #2,SP
- MOVE.B D0,CHAR_CODE
- SWAP D0
- MOVE.B D0,SCAN_CODE
- KEYBOARD_READ_2
- BSR TURN_CURSOR_OFF
- CMP.B #0,MSG_ERROR_FLAG
- BEQ CHECK_SPECIAL_KEY
- MOVE.B #0,MSG_ERROR_FLAG
- LEA MSG_STATUS_OK,A0
- BSR WRITE_STRING
- MOVE.B HEX_ROW,CURSOR_SET_ROW
- MOVE.B HEX_COL,CURSOR_SET_COL
- LEA CURSOR_SET,A0
- BSR WRITE_STRING
- CHECK_SPECIAL_KEY
- MOVE.B SCAN_CODE,D0
- CMP.B #$3B,D0
- BEQ SECTOR_GET
- CMP.B #$55,D0
- BEQ SECTOR_PUT
- CMP.B #$3D,D0
- BEQ SECTOR_PRINT
- CMP.B #$3E,D0
- BEQ EDIT_SECTOR_EXIT
- CMP.B #$3F,D0
- BEQ FIND_STRING
- CMP.B #$40,D0
- BEQ FIND_NEXT
- CMP.B #$41,D0
- BEQ NEXT_DRIVE
- CMP.B #$42,D0
- BEQ NEXT_PAGE
- CMP.B #$43,D0
- BEQ NEXT_SECTOR
- CMP.B #$44,D0
- BEQ NEXT_TRACK
- CMP.B #$5C,D0
- BEQ PREV_SECTOR
- CMP.B #$5D,D0
- BEQ PREV_TRACK
- CMP.B #$48,D0
- BEQ MOVE_CURSOR_UP
- CMP.B #$50,D0
- BEQ MOVE_CURSOR_DOWN
- CMP.B #$4B,D0
- BEQ MOVE_CURSOR_LEFT
- CMP.B #$4D,D0
- BEQ MOVE_CURSOR_RIGHT
- CMP.B #$1C,D0
- BEQ MOVE_CURSOR_RETURN
- MOVE.B CHAR_CODE,D0
- CHECK_NORMAL_KEY
- CMP.B #'0',D0
- BLT RING_BELL
- CMP.B #$3A,D0
- BLT CHECK_NORMAL_1
- CMP.B #'A',D0
- BLT RING_BELL
- CMP.B #'F',D0
- BGT RING_BELL
- SUB.B #7,D0
- CHECK_NORMAL_1 SUB.B #$30,D0
- LEA BUFFER,A1
- ADD.W BUFFER_OFFSET,A1
- MOVE.B (A1),D1
- CMP.B #0,LEFT_RIGHT_FLAG
- BNE CHECK_NORMAL_2
- AND.B #$0F,D1
- ASL #4,D0
- AND.B #$F0,D0
- BRA CHECK_NORMAL_3
- CHECK_NORMAL_2 AND.B #$F0,D1
- AND.B #$0F,D0
- CHECK_NORMAL_3 OR.B D0,D1
- MOVE.B D1,(A1)
- MOVE.B CHAR_CODE,D0
- BSR WRITE_CHARACTER
- MOVE.B ASCII_ROW,CURSOR_SET_ROW
- MOVE.B ASCII_COL,CURSOR_SET_COL
- LEA CURSOR_SET,A0
- BSR WRITE_STRING
- MOVE.B #'.',D0
- CMP.B #32,D1
- BLT CHECK_NORMAL_4
- CMP.B #127,D1
- BGT CHECK_NORMAL_4
- MOVE.B D1,D0
- CHECK_NORMAL_4 BSR WRITE_CHARACTER
- BRA MOVE_CURSOR_RIGHT
- RING_BELL LEA MSG_INVALID_CHAR,A0
- BSR WRITE_STRING
- MOVE.B #1,MSG_ERROR_FLAG
- RTS
- BIN_TO_HEX_DIGIT
- AND.B #$0F,D0
- CMP.B #10,D0
- BLT BIN_TO_HEX_DIGIT1
- ADD.B #7,D0
- BIN_TO_HEX_DIGIT1
- ADD.B #48,D0
- RTS
- TURN_CURSOR_ON MOVE.W #20,-(SP)
- MOVE.W #1,-(SP)
- MOVE.W #CURSCONF,-(SP)
- TRAP #XBIOS
- ADDQ.L #6,SP
- RTS
- TURN_CURSOR_OFF
- MOVE.W #20,-(SP)
- MOVE.W #0,-(SP)
- MOVE.W #CURSCONF,-(SP)
- TRAP #XBIOS
- ADDQ.L #6,SP
- RTS
- TURN_CAPS_ON MOVE.W #16,-(SP)
- MOVE.W #KBSHIFT,-(SP)
- TRAP #BIOS
- ADDQ.L #4,SP
- RTS
- PRINT_OFFSET MOVEM.L D1-D3,-(SP)
- MOVE.B #36,CURSOR_SET_ROW
- MOVE.B #32,CURSOR_SET_COL
- LEA CURSOR_SET,A0
- BSR WRITE_STRING
- MOVE.W PAGE_OFFSET,D2
- MOVE.W #15,D3
- PRINT_OFFSET1 MOVE.W D2,D0
- MOVE.W #3,D1
- LEA SECTOR_PAGE_OFFSET,A0
- BSR BIN_TO_HEX
- LEA SECTOR_PAGE,A0
- BSR WRITE_STRING
- ADD.W #$10,D2
- DBRA D3,PRINT_OFFSET1
- MOVEM.L (SP)+,D1-D3
- RTS
- MOVE_CURSOR_RIGHT
- CMP.B #0,LEFT_RIGHT_FLAG
- BNE MOVE_RIGHT_1
- MOVE.B #1,LEFT_RIGHT_FLAG
- BRA MOVE_RIGHT_2
- MOVE_RIGHT_1 MOVE.B #0,LEFT_RIGHT_FLAG
- ADD.W #1,COL
- CMP.W #16,COL
- BLT MOVE_RIGHT_2
- MOVE.W #0,COL
- BRA MOVE_CURSOR_DOWN
- MOVE_RIGHT_2 RTS
- MOVE_CURSOR_LEFT
- CMP.B #0,LEFT_RIGHT_FLAG
- BEQ MOVE_LEFT_1
- MOVE.B #0,LEFT_RIGHT_FLAG
- BRA MOVE_LEFT_2
- MOVE_LEFT_1 MOVE.B #1,LEFT_RIGHT_FLAG
- SUB.W #1,COL
- BPL MOVE_LEFT_2
- MOVE.W #15,COL
- BRA MOVE_CURSOR_UP
- MOVE_LEFT_2 RTS
- MOVE_CURSOR_DOWN
- ADD.W #1,ROW
- CMP.W #16,ROW
- BLT MOVE_DOWN_1
- MOVE.W #0,ROW
- MOVE_DOWN_1 RTS
- MOVE_CURSOR_UP SUB.W #1,ROW
- BPL MOVE_UP_1
- MOVE.W #15,ROW
- MOVE_UP_1 RTS
- MOVE_CURSOR_RETURN
- MOVE.W #0,COL
- MOVE.B #0,LEFT_RIGHT_FLAG
- BRA MOVE_CURSOR_DOWN
- MOVE_CURSOR_HOME
- MOVE.W #0,COL
- MOVE.W #0,ROW
- MOVE.B #0,LEFT_RIGHT_FLAG
- RTS
- CALC_BUFFER_LOCATION
- MOVEM.L D0,-(SP)
- CLR.L D0
- MOVE.W ROW,D0
- MULU #16,D0
- ADD.W COL,D0
- ADD.W PAGE_OFFSET,D0
- MOVE.W D0,BUFFER_OFFSET
- MOVEM.L (SP)+,D0
- RTS
- CALC_HEX_LOCATION
- MOVEM.L D0,-(SP)
- MOVE.W ROW,D0
- ADD.W #36,D0
- MOVE.B D0,HEX_ROW
- CLR.L D0
- MOVE.W COL,D0
- MULU #3,D0
- ADD.W #42,D0
- ADD.B LEFT_RIGHT_FLAG,D0
- MOVE.B D0,HEX_COL
- MOVEM.L (SP)+,D0
- RTS
- CALC_ASCII_LOCATION
- MOVEM.L D0,-(SP)
- MOVE.W ROW,D0
- ADD.W #36,D0
- MOVE.B D0,ASCII_ROW
- MOVE.W COL,D0
- ADD.W #93,D0
- MOVE.B D0,ASCII_COL
- MOVEM.L (SP)+,D0
- RTS
- SECTOR_GET LEA MSG_LOAD_SECTOR,A0
- BSR WRITE_STRING
- MOVE.W #0,SIDE
- MOVE.W SECTOR,TEMP_SECTOR
- CMP.W #10,SECTOR
- BLT SECTOR_GET_1
- MOVE.W #1,SIDE
- SUB.W #9,TEMP_SECTOR
- SECTOR_GET_1 MOVE.W #1,-(SP)
- MOVE.W SIDE,-(SP)
- MOVE.W TRACK,-(SP)
- MOVE.W TEMP_SECTOR,-(SP)
- MOVE.W DRIVE,-(SP)
- MOVE.L #0,-(SP)
- MOVE.L #BUFFER,-(SP)
- MOVE.W #FLOPRD,-(SP)
- TRAP #XBIOS
- ADD.L #20,SP
- TST.W D0
- BMI SECTOR_DISK_ERROR
- MOVE.W #0,PAGE_OFFSET
- BSR PRINT_OFFSET
- BSR BUILD_DATA_SCREEN
- BSR MOVE_CURSOR_HOME
- MOVE.B #0,MSG_ERROR_FLAG
- LEA MSG_STATUS_OK,A0
- BSR WRITE_STRING
- RTS
- SECTOR_PUT LEA MSG_SAVE_SECTOR,A0
- BSR WRITE_STRING
- MOVE.W #0,SIDE
- MOVE.W SECTOR,TEMP_SECTOR
- CMP.W #10,SECTOR
- BLT SECTOR_PUT_1
- MOVE.W #1,SIDE
- SUB.W #9,TEMP_SECTOR
- SECTOR_PUT_1 MOVE.W #1,-(SP)
- MOVE.W SIDE,-(SP)
- MOVE.W TRACK,-(SP)
- MOVE.W TEMP_SECTOR,-(SP)
- MOVE.W DRIVE,-(SP)
- MOVE.L #0,-(SP)
- MOVE.L #BUFFER,-(SP)
- MOVE.W #FLOPWR,-(SP)
- TRAP #XBIOS
- ADD.L #20,SP
- TST.W D0
- BMI SECTOR_DISK_ERROR
- MOVE.W #0,PAGE_OFFSET
- BSR PRINT_OFFSET
- BSR BUILD_DATA_SCREEN
- BSR MOVE_CURSOR_HOME
- MOVE.B #0,MSG_ERROR_FLAG
- LEA MSG_STATUS_OK,A0
- BSR WRITE_STRING
- RTS
- SECTOR_DISK_ERROR
- NEG.W D0
- AND.W #$1F,D0
- MOVE.W #2,D1
- LEA MSG_DISK_ERROR_NO,A0
- BSR BIN_TO_DEC
- LEA MSG_DISK_ERROR,A0
- BSR WRITE_STRING
- MOVE.B #1,MSG_ERROR_FLAG
- RTS
- SECTOR_PRINT LEA MSG_PRINT,A0
- BSR WRITE_STRING
- MOVE.B DISPLAY_DRIVE_NO,HC_DRIVE
- LEA DISPLAY_SECTOR_NO,A0
- LEA HC_SECTOR,A1
- MOVE.B (A0)+,(A1)+
- MOVE.B (A0)+,(A1)+
- LEA DISPLAY_TRACK_NO,A0
- LEA HC_TRACK,A1
- MOVE.B (A0)+,(A1)+
- MOVE.B (A0)+,(A1)+
- LEA HC_TITLE,A1
- BSR WRITE_HC_STRING
- TST.W D0
- BMI SECTOR_PRINT_6
- CLR.W D2
- LEA BUFFER,A2
- MOVE.W #31,D4
- SECTOR_PRINT_1 MOVE.W D2,D0
- MOVE.W #3,D1
- LEA HC_OFFSET,A0
- BSR BIN_TO_HEX
- LEA HC_HEX,A0
- LEA HC_ASCII,A1
- MOVE.W #15,D3
- SECTOR_PRINT_2 MOVE.B (A2),D0
- CMP.B #$20,D0
- BLT SECTOR_PRINT_3
- CMP.B #$7F,D0
- BGT SECTOR_PRINT_3
- BRA SECTOR_PRINT_4
- SECTOR_PRINT_3 MOVE.B #'.',D0
- SECTOR_PRINT_4 MOVE.B D0,(A1)+
- MOVE.B (A2)+,D0
- MOVE.B D0,D1
- AND.B #$F0,D0
- LSR.B #4,D0
- BSR BIN_TO_HEX_DIGIT
- MOVE.B D0,(A0)+
- MOVE.B D1,D0
- BSR BIN_TO_HEX_DIGIT
- MOVE.B D0,(A0)+
- MOVE.B #' ',(A0)+
- DBRA D3,SECTOR_PRINT_2
- LEA HC_DATA_LINE,A1
- BSR WRITE_HC_STRING
- TST.W D0
- BMI SECTOR_PRINT_6
- ADD.W #16,D2
- CMP.W #16,D4
- BNE SECTOR_PRINT_5
- LEA HC_CR,A1
- BSR WRITE_HC_STRING
- SECTOR_PRINT_5 DBRA D4,SECTOR_PRINT_1
- LEA HC_FF,A1
- BSR WRITE_HC_STRING
- LEA MSG_STATUS_OK,A0
- BSR WRITE_STRING
- MOVE.B #0,MSG_ERROR_FLAG
- BRA SECTOR_PRINT_7
- SECTOR_PRINT_6 LEA MSG_PRINT_ERROR,A0
- BSR WRITE_STRING
- MOVE.B #1,MSG_ERROR_FLAG
- SECTOR_PRINT_7 RTS
- WRITE_HC_STRING
- CLR.W D0
- MOVE.B (A1)+,D0
- TST.W D0
- BEQ WRITE_HC_STRING_1
- MOVE.W D0,-(SP)
- MOVE.W #PRINTEROUT,-(SP)
- TRAP #GEMDOS
- ADDQ.L #4,SP
- TST.W D0
- BMI WRITE_HC_STRING
- MOVE.W #-1,D0
- WRITE_HC_STRING_1
- RTS
- SECTOR_SEARCH MOVE.W BUFFER_OFFSET,D4
- CLR.W D3
- MOVE.B SEARCH_KEY_LEN,D3
- SUB.W #1,D3
- LEA MSG_SEARCHING,A0
- BSR WRITE_STRING
- SECTOR_SEARCH_1
- MOVE.W #0,SIDE
- MOVE.W SECTOR,TEMP_SECTOR
- CMP.W #10,SECTOR
- BLT SECTOR_SEARCH_1A
- MOVE.W #1,SIDE
- SUB.W #9,TEMP_SECTOR
- SECTOR_SEARCH_1A
- MOVE.W #1,-(SP)
- MOVE.W SIDE,-(SP)
- MOVE.W TRACK,-(SP)
- MOVE.W TEMP_SECTOR,-(SP)
- MOVE.W DRIVE,-(SP)
- MOVE.L #0,-(SP)
- MOVE.L #BUFFER,-(SP)
- MOVE.W #FLOPRD,-(SP)
- TRAP #XBIOS
- ADD.L #20,SP
- TST.W D0
- BMI SECTOR_DISK_ERROR
- SECTOR_SEARCH_2
- MOVE.W D4,D0
- ADD.W D3,D0
- CMP.W #510,D0
- BGT SECTOR_SEARCH_5
- LEA BUFFER,A0
- ADD.W D4,A0
- LEA SEARCH_KEY,A1
- MOVE.W D3,D0
- SECTOR_SEARCH_3
- CMP.B (A0)+,(A1)+
- BNE SECTOR_SEARCH_4
- DBRA D0,SECTOR_SEARCH_3
- MOVE.W D4,D0
- AND.W #$0100,D0
- MOVE.W D0,PAGE_OFFSET
- MOVE.W D4,D0
- LSR.B #4,D0
- AND.W #$0F,D0
- MOVE.W D0,ROW
- MOVE.W D4,D0
- AND.W #$0F,D0
- MOVE.W D0,COL
- MOVE.B #0,LEFT_RIGHT_FLAG
- BSR PRINT_OFFSET
- BSR BUILD_DATA_SCREEN
- MOVE.B #1,MSG_ERROR_FLAG
- LEA MSG_FOUND,A0
- BSR WRITE_STRING
- BRA SECTOR_SEARCH_9
- SECTOR_SEARCH_4
- ADDQ.W #1,D4
- BRA SECTOR_SEARCH_2
- SECTOR_SEARCH_5
- MOVE.W #0,D4
- MOVE.W #CONSTAT,-(SP)
- TRAP #GEMDOS
- ADD.L #2,SP
- TST.W D0
- BEQ SECTOR_SEARCH_6
- BSR RESTORE_KEYS
- BSR PRINT_TRACK
- BSR PRINT_SECTOR
- LEA MSG_FIND_ABORT,A0
- BSR WRITE_STRING
- MOVE.B #1,MSG_ERROR_FLAG
- BRA SECTOR_SEARCH_9
- SECTOR_SEARCH_6
- ADDQ.W #1,SECTOR
- MOVE.W SECTOR,D0
- CMP.W SECTOR_LIMIT,D0
- BGT SECTOR_SEARCH_7
- BSR PRINT_SECTOR
- BRA SECTOR_SEARCH_1
- SECTOR_SEARCH_7
- MOVE.W #1,SECTOR
- BSR PRINT_SECTOR
- ADDQ.W #1,TRACK
- CMP.W #80,TRACK
- BEQ SECTOR_SEARCH_8
- BSR PRINT_TRACK
- BRA SECTOR_SEARCH_1
- SECTOR_SEARCH_8
- BSR RESTORE_KEYS
- BSR PRINT_TRACK
- BSR PRINT_SECTOR
- LEA MSG_NOT_FOUND,A0
- BSR WRITE_STRING
- MOVE.B #1,MSG_ERROR_FLAG
- SECTOR_SEARCH_9 RTS
- FIND_STRING LEA MSG_FIND,A0
- BSR WRITE_STRING
- BSR TURN_CURSOR_ON
- MOVE.B #70,KB_BUFFER
- LEA KB_BUFFER,A0
- BSR READ_STRING
- AND.W #$FF,D0
- MOVE.B D0,SEARCH_KEY_LEN
- TST.W D0
- BEQ FIND_STRING_ABORTED
- SUB.W #1,D0
- LEA KB_BUFFER_DATA,A0
- LEA SEARCH_KEY,A1
- CMP.B #'X',(A0)
- BNE FIND_STRING_2
- TST.W D0
- BEQ FIND_STRING_1
- MOVE.W D0,D1
- AND.W #1,D1
- CMP.W #1,D1
- BEQ FIND_STRING_1
- BSR CONVERT_TO_HEX
- TST.W D0
- BEQ FIND_STRING_3
- FIND_STRING_1 MOVE.B #0,SEARCH_KEY_LEN
- LEA MSG_INVALID_HEX,A0
- BSR WRITE_STRING
- MOVE.B #1,MSG_ERROR_FLAG
- BRA FIND_STRING_4
- FIND_STRING_2 MOVE.B (A0)+,(A1)+
- DBRA D0,FIND_STRING_2
- FIND_STRING_3 BSR SAVE_KEYS
- BSR TURN_CURSOR_OFF
- BRA SECTOR_SEARCH
- FIND_STRING_4 RTS
- FIND_STRING_ABORTED
- LEA MSG_FIND_ABORT,A0
- BSR WRITE_STRING
- MOVE.B #1,MSG_ERROR_FLAG
- RTS
- FIND_NEXT CMP.B #0,SEARCH_KEY_LEN
- BEQ FIND_STRING_ABORTED
- BSR SAVE_KEYS
- ADD.W #1,BUFFER_OFFSET
- CMP.W #512,BUFFER_OFFSET
- BNE SECTOR_SEARCH
- MOVE.W #0,BUFFER_OFFSET
- ADD.W #1,SECTOR
- MOVE.W SECTOR,D0
- CMP.W SECTOR_LIMIT,D0
- BGT FIND_NEXT_1
- BSR PRINT_SECTOR
- BRA SECTOR_SEARCH
- FIND_NEXT_1 MOVE.W #1,SECTOR
- BSR PRINT_SECTOR
- ADD.W #1,TRACK
- CMP.W #80,TRACK
- BEQ FIND_NEXT_2
- BSR PRINT_TRACK
- BRA SECTOR_SEARCH
- FIND_NEXT_2 MOVE.W #0,TRACK
- BSR PRINT_TRACK
- BRA SECTOR_SEARCH
- CONVERT_TO_HEX MOVE.W D0,D2
- SUB.W #1,D2
- MOVE.B #0,SEARCH_KEY_LEN
- MOVE.B (A0)+,D0
- CONVERT_TO_HEX_1
- MOVE.B (A0)+,D0
- BSR HEX_TO_BIN
- TST.W D0
- BMI CONVERT_TO_HEX_2
- MOVE.B D0,D1
- ASL.B #4,D1
- MOVE.B (A0)+,D0
- BSR HEX_TO_BIN
- TST.W D0
- BMI CONVERT_TO_HEX_2
- ADD.B D0,D1
- MOVE.B D1,(A1)+
- ADD.B #1,SEARCH_KEY_LEN
- SUB.W #1,D2
- DBRA D2,CONVERT_TO_HEX_1
- CLR.W D0
- CONVERT_TO_HEX_2
- RTS
- HEX_TO_BIN CMP.B #'0',D0
- BLT HEX_TO_BIN_3
- CMP.B #'9',D0
- BGT HEX_TO_BIN_1
- BRA HEX_TO_BIN_2
- HEX_TO_BIN_1 CMP.B #'A',D0
- BLT HEX_TO_BIN_3
- CMP.B #'F',D0
- BGT HEX_TO_BIN_3
- SUB.B #$37,D0
- HEX_TO_BIN_2 AND.B #$0F,D0
- BRA HEX_TO_BIN_4
- HEX_TO_BIN_3 MOVE.W #-1,D0
- HEX_TO_BIN_4 RTS
-
- SAVE_KEYS MOVE.W PAGE_OFFSET,PAGE_OFFSET_SAVE
- MOVE.W ROW,ROW_SAVE
- MOVE.W COL,COL_SAVE
- MOVE.W TRACK,TRACK_SAVE
- MOVE.W SECTOR,SECTOR_SAVE
- RTS
- RESTORE_KEYS MOVE.W PAGE_OFFSET_SAVE,PAGE_OFFSET
- MOVE.W ROW_SAVE,ROW
- MOVE.W COL_SAVE,COL
- MOVE.W TRACK_SAVE,TRACK
- MOVE.W SECTOR_SAVE,SECTOR
- RTS
- GET_BOOT_SECTOR
- LEA MSG_DRIVE,A0
- BSR WRITE_STRING
- MOVE.W #0,TRACK
- MOVE.W #1,SECTOR
- BSR PRINT_TRACK
- BSR PRINT_SECTOR
- MOVE.W #9,SECTOR_LIMIT
- MOVE.W #1,-(SP)
- MOVE.W #0,-(SP)
- MOVE.W #0,-(SP)
- MOVE.W #1,-(SP)
- MOVE.W DRIVE,-(SP)
- MOVE.L #0,-(SP)
- MOVE.L #BOOT_BUFFER,-(SP)
- MOVE.W #FLOPRD,-(SP)
- TRAP #XBIOS
- ADD.L #20,SP
- TST.W D0
- BMI GET_BOOT_SECTOR_1
- LEA BOOT_BUFFER,A0
- CMP.B #1,26(A0)
- BEQ GET_BOOT_SECTOR_2
- MOVE.W #18,SECTOR_LIMIT
- BRA GET_BOOT_SECTOR_2
- GET_BOOT_SECTOR_1
- BSR SECTOR_DISK_ERROR
- BRA GET_BOOT_SECTOR_3
- GET_BOOT_SECTOR_2
- LEA MSG_STATUS_OK,A0
- BSR WRITE_STRING
- MOVE.B #0,MSG_ERROR_FLAG
- GET_BOOT_SECTOR_3
- RTS
- NEXT_PAGE CMP.W #0,PAGE_OFFSET
- BEQ NEXT_PAGE_1
- MOVE.W #0,PAGE_OFFSET
- BRA NEXT_PAGE_2
- NEXT_PAGE_1 MOVE.W #256,PAGE_OFFSET
- NEXT_PAGE_2 BSR PRINT_OFFSET
- BSR BUILD_DATA_SCREEN
- BSR MOVE_CURSOR_HOME
- RTS
- NEXT_DRIVE ADD.W #1,DRIVE
- CMP.W #2,DRIVE
- BNE NEXT_DRIVE_1
- MOVE.W #0,DRIVE
- NEXT_DRIVE_1 BSR PRINT_DRIVE
- BSR GET_BOOT_SECTOR
- RTS
- NEXT_SECTOR ADD.W #1,SECTOR
- MOVE.W SECTOR,D0
- CMP.W SECTOR_LIMIT,D0
- BGT NEXT_SECTOR_1
- BRA NEXT_SECTOR_2
- NEXT_SECTOR_1 MOVE.W #1,SECTOR
- NEXT_SECTOR_2 BSR PRINT_SECTOR
- RTS
- PREV_SECTOR SUB.W #1,SECTOR
- CMP.W #0,SECTOR
- BNE PREV_SECTOR_1
- MOVE.W #9,SECTOR
- PREV_SECTOR_1 BSR PRINT_SECTOR
- RTS
- NEXT_TRACK ADD.W #1,TRACK
- CMP.W #80,TRACK
- BLT NEXT_TRACK_1
- MOVE.W #0,TRACK
- NEXT_TRACK_1 BSR PRINT_TRACK
- RTS
- PREV_TRACK SUB.W #1,TRACK
- BPL PREV_TRACK_1
- MOVE.W #79,TRACK
- PREV_TRACK_1 BSR PRINT_TRACK
- RTS
- PRINT_TRACK MOVEM.L D1,-(SP)
- MOVE.W TRACK,D0
- MOVE.W #2,D1
- LEA DISPLAY_TRACK_NO,A0
- BSR BIN_TO_DEC
- LEA DISPLAY_TRACK,A0
- BSR WRITE_STRING
- MOVEM.L (SP)+,D1
- RTS
- PRINT_SECTOR MOVEM.L D1,-(SP)
- MOVE.W SECTOR,D0
- MOVE.W #2,D1
- LEA DISPLAY_SECTOR_NO,A0
- BSR BIN_TO_DEC
- LEA DISPLAY_SECTOR,A0
- BSR WRITE_STRING
- MOVEM.L (SP)+,D1
- RTS
- PRINT_DRIVE MOVE.W DRIVE,D0
- ADD.W #'A',D0
- MOVE.B D0,DISPLAY_DRIVE_NO
- LEA DISPLAY_DRIVE,A0
- BSR WRITE_STRING
- RTS
- ZERO_BUFFER MOVE.L #127,D0
- LEA BUFFER,A0
- ZERO_BUFFER_LOOP
- MOVE.L #0,(A0)+
- DBRA D0,ZERO_BUFFER_LOOP
- RTS
- BUILD_DATA_SCREEN
- MOVEM.L D1-D3/A1-A3,-(SP)
- MOVE.W #15,D2
- LEA BUFFER,A1
- ADD.W PAGE_OFFSET,A1
- MOVE.B #36,DATA_LINE_ROW
- MOVE.B #42,DATA_LINE_COL
- BUILD_DS_1 MOVE.W #15,D3
- LEA DATA_LINE_HEX,A2
- LEA DATA_LINE_ASCII,A3
- BUILD_DS_2 MOVE.B (A1),D0
- CMP.B #$20,D0
- BLT BUILD_DS_3
- CMP.B #$7F,D0
- BGT BUILD_DS_3
- BRA BUILD_DS_4
- BUILD_DS_3 MOVE.B #'.',D0
- BUILD_DS_4 MOVE.B D0,(A3)+
- MOVE.B (A1)+,D0
- MOVE.B D0,D1
- AND.B #$F0,D0
- LSR.B #4,D0
- BSR BIN_TO_HEX_DIGIT
- MOVE.B D0,(A2)+
- MOVE.B D1,D0
- BSR BIN_TO_HEX_DIGIT
- MOVE.B D0,(A2)+
- MOVE.B #' ',(A2)+
- DBRA D3,BUILD_DS_2
- LEA DATA_LINE,A0
- BSR WRITE_STRING
- ADD.B #1,DATA_LINE_ROW
- DBRA D2,BUILD_DS_1
- MOVEM.L (SP)+,D1-D3/A1-A3
- RTS
- BIN_TO_HEX MOVEM.L D0-D2/A0,-(SP)
- ADD.W D1,A0
- SUB.W #1,D1
- MOVE.L D0,D2
- BIN_TO_HEX1 MOVE.B D2,D0
- BSR BIN_TO_HEX_DIGIT
- MOVE.B D0,-(A0)
- LSR.L #4,D2
- DBRA D1,BIN_TO_HEX1
- MOVEM.L (SP)+,D0-D2/A0
- RTS
- BIN_TO_DEC MOVEM.L D0-D1/A0,-(SP)
- ADD.W D1,A0
- SUBQ.W #1,D1
- BIN_TO_DEC2 EXT.L D0
- DIVS #10,D0
- SWAP D0
- MOVE.B D0,-(A0)
- ADD.B #'0',(A0)
- SWAP D0
- DBRA D1,BIN_TO_DEC2
- MOVEM.L (SP)+,D0-D1/A0
- RTS
- WRITE_STRING MOVE.L A0,-(SP)
- MOVE.W #CONWS,-(SP)
- TRAP #GEMDOS
- ADDQ.L #6,SP
- RTS
- READ_STRING MOVE.L A0,-(SP)
- MOVE.W #CONRS,-(SP)
- TRAP #GEMDOS
- ADDQ.L #6,SP
- RTS
- WRITE_CHARACTER
- MOVE.W D0,-(SP)
- MOVE.W #CONOUT,-(SP)
- TRAP #GEMDOS
- ADDQ.L #4,SP
- RTS
- READ_CHARACTER MOVE.W #CONIN,-(SP)
- TRAP #GEMDOS
- ADDQ.L #2,SP
- RTS
-
- DATA
- SECTOR_SCREEN DC.B 27,CLEAR_HOME
- DC.B 27,'p'
- DC.B ' Doctor Flop E. Disk Sector '
- DC.B 'Editor '
- DC.B 'Drive A Track 00 Sector 00 '
- DC.B 27,'q'
- DC.B 27,'Y',34,43
- DC.B '0 1 2 3 4 5 6 7 '
- DC.B '8 9 A B C D E F '
- DC.B '0123456789ABCDEF'
- DC.B 27,'Y',53,40
- DC.B 'F1=Get F3=Print F5=Find '
- DC.B ' F7=Drive F9 =Sector'
- DC.B 27,'Y',54,40
- DC.B 'F2=Put F4=Exit F6=Next '
- DC.B ' F8=Page F10=Track'
- DC.B 0
- SECTOR_PAGE DC.B ' '
- SECTOR_PAGE_OFFSET
- DC.B '000'
- DC.B CR,LF
- DC.B 0
- DATA_LINE DC.B 27,'Y'
- DATA_LINE_ROW DC.B 36
- DATA_LINE_COL DC.B 42
- DATA_LINE_HEX DC.B '00 00 00 00 00 00 00 00 '
- DC.B '00 00 00 00 00 00 00 00 |'
- DATA_LINE_ASCII
- DC.B '................|'
- DC.B 0
- CURSOR_SET DC.B 27,'Y'
- CURSOR_SET_ROW DC.B 32
- CURSOR_SET_COL DC.B 32
- DC.B 0
- MSG_STATUS_OK DC.B 27,'Y',56,32
- DC.B '> OK.'
- DC.B 27,'K'
- DC.B 0
- MSG_INVALID_CHAR
- DC.B 27,'Y',56,32
- DC.B '> Invalid character.'
- DC.B 27,'K'
- DC.B BEL
- DC.B 0
- MSG_DISK_ERROR DC.B 27,'Y',56,32
- DC.B '> Disk error #'
- MSG_DISK_ERROR_NO
- DC.B '00 has occurred.'
- DC.B 27,'K'
- DC.B 0
- MSG_PRINT_ERROR
- DC.B 27,'Y',56,32
- DC.B '> Printer is not responding.'
- DC.B 27,'K'
- DC.B 0
- MSG_PRINT DC.B 27,'Y',56,32
- DC.B '> Printing. '
- DC.B 27,'K'
- DC.B 0
- MSG_LOAD_SECTOR
- DC.B 27,'Y',56,32
- DC.B '> Reading sector. '
- DC.B 27,'K'
- DC.B 0
- MSG_SAVE_SECTOR
- DC.B 27,'Y',56,32
- DC.B '> Writing sector. '
- DC.B 27,'K'
- DC.B 0
- MSG_FIND DC.B 27,'Y',56,32
- DC.B '> Find: '
- DC.B 27,'K'
- DC.B 0
- MSG_FIND_ABORT DC.B 27,'Y',56,32
- DC.B '> Find was aborted.'
- DC.B 27,'K'
- DC.B 0
-
- MSG_SEARCHING DC.B 27,'Y',56,32
- DC.B '> Searching. '
- DC.B 27,'K'
- DC.B 0
- MSG_FOUND DC.B 27,'Y',56,32
- DC.B '> String was found.'
- DC.B 27,'K'
- DC.B 0
- MSG_NOT_FOUND DC.B 27,'Y',56,32
- DC.B '> End of disk reached.'
- DC.B 27,'K'
- DC.B 0
- MSG_INVALID_HEX
- DC.B 27,'Y',56,32
- DC.B '> Invalid hex string.'
- DC.B 27,'K'
- DC.B 0
- MSG_DRIVE DC.B 27,'Y',56,32
- DC.B '> Setting drive.'
- DC.B 27,'K'
- DC.B 0
- DISPLAY_TRACK DC.B 27,'Y',32,96
- DC.B 27,'p'
- DISPLAY_TRACK_NO
- DC.B '00'
- DC.B 27,'q'
- DC.B 0
- DISPLAY_SECTOR DC.B 27,'Y',32,109
- DC.B 27,'p'
- DISPLAY_SECTOR_NO
- DC.B '01'
- DC.B 27,'q'
- DC.B 0
- DISPLAY_DRIVE DC.B 27,'Y',32,85
- DC.B 27,'p'
- DISPLAY_DRIVE_NO
- DC.B 'A'
- DC.B 27,'q'
- DC.B 0
- HC_TITLE DC.B CR,LF,LF
- DC.B ' Doctor Flop E. Disk Sector '
- DC.B 'Editor '
- DC.B 'Drive '
- HC_DRIVE DC.B 'A'
- DC.B ' Track '
- HC_TRACK DC.B '00'
- DC.B ' Sector '
- HC_SECTOR DC.B '00'
- DC.B CR,LF,LF,LF,LF
- DC.B ' 0 1 2 3 4 5 6 7 '
- DC.B '8 9 A B C D E F '
- DC.B '0123456789ABCDEF'
- DC.B CR,LF,LF,LF
- DC.B 0
- HC_DATA_LINE DC.B ' '
- HC_OFFSET DC.B '000'
- DC.B ' '
- HC_HEX DC.B '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00'
- DC.B ' |'
- HC_ASCII DC.B '................|'
- DC.B CR,LF
- DC.B 0
- HC_CR DC.B CR,LF,0
- HC_FF DC.B 12,0
- CHAR_CODE DS.B 1
- SCAN_CODE DS.B 1
- LEFT_RIGHT_FLAG
- DS.B 1
- MSG_ERROR_FLAG DS.B 1
- HEX_ROW DS.B 1
- HEX_COL DS.B 1
- ASCII_ROW DS.B 1
- ASCII_COL DS.B 1
- COL_SAVE DS.W 1
- ROW_SAVE DS.W 1
- TRACK_SAVE DS.W 1
- SECTOR_SAVE DS.W 1
- PAGE_OFFSET_SAVE
- DS.W 1
- COL DS.W 1
- ROW DS.W 1
- DRIVE DS.W 1
- SIDE DS.W 1
- TRACK DS.W 1
- SECTOR DS.W 1
- SECTOR_LIMIT DS.W 1
- TEMP_SECTOR DS.W 1
- SEARCH_OFFSET DS.W 1
- TEMP_OFFSET DS.W 1
- PAGE_OFFSET DS.W 1
- BUFFER_OFFSET DS.W 1
- KB_BUFFER DS.B 1
- KB_BUFFER_LEN DS.B 1
- KB_BUFFER_DATA DS.B 80
- SEARCH_KEY_LEN DS.B 1
- SEARCH_KEY DS.B 80
- BOOT_BUFFER DS.W 512
- BUFFER DS.W 512
- END
-
-